include "module.thrift"

namespace java com.to8to.thrift.diary.advanced
namespace php com.to8to.thrift.diary.advanced

struct ListSceneCondition
{
    /** 查询字段 */
    1:list<string> fields 
    /** 预算范围 */
    2:module.TRange budget_range 
    /** 装修风格 */
    3:list<i32> style 
    /** 面积范围 */
    4:module.TRange area_range 
    /** 装修阶段 */
    5:list<i32> progress_ids 
    /** 获取处于某些状态 */
    6:list<i32> status 
    /** 是否包含精选：-1只包含 0不包含，1可包含 */
    7:i32 ftime=1 
	/** 城市列表 */
	8:list<i32> cities
	

	
    /** 现场id */
    11:list<string> ids 
    /** 用户id */
    12:list<string> owner_ids 

    /** 用户id，指定了用户id就能看到自己未审核通过的非空现场 */
    21:string user_id 
}

struct ListSceneDiaryViewsRequest
{
    /** 查询条件 */
    1:ListSceneCondition cond 
    /** 排序字段 */
    2:list<module.TSortField> sorts 

    /** 分页信息 */
    6:i32 offset=0 
    7:i32 limit=10

    /** true:取第一篇日记, false:取最后一篇日记 */
    11:bool useFirstDiary = false 
    /** 0:不显示；1 显示 */
    12:i32 showEmptyScene = 1 
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    20:string trace_tag 
}

struct ListSceneDiaryViewsResponse
{
    1:string res="succ"
    2:i32 total
    3:list<module.TSceneDiaryView> results
    /** 跟踪字段 */
    10:string trace_tag 
}

/**
*精选列表排序一次查询：
*query={}
*sort={"ftime":-1, "stat.owner_type":1,  "stat.view_num":-1}
*/
struct ListJingXuanSceneRequest
{
    /** 过滤条件 */
    3:ListSceneCondition cond 
    6:i32 offset=0      
    7:i32 limit=10
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct ListJingXuanSceneResponse
{
 1:string res="succ"
    2:i32 total
    3:list<module.TSceneDiaryView> results
    /** 跟踪字段 */
    10:string trace_tag 
}


/**
*最新列表一次到两次查询
*
*1. count = db.count({"op_tags.<platform>.top_time" : {"$gt":0}})
*
*2. N = min(count, top_num)
*
*3. 比较N与offset, offset+limit的关系，
*    3.1 若offset+limit <= N，则只需查询a[offset, offset+limit]; 
*    3.2 若offset < N AND offset+limit > N, 则需查询两次a[offset, N], b[0,offset+limit-N]，结果合并
*    3.3 若offset>=N, 查询b[offset-N, offset+limit-N]
*
*查询a: 
*query={}
*sort={"op_tags.<platform>.top_time":-1}
*
*查询b:
*query={"op_tags.<platform>.top_time": 0,...}
*sort={"stat.owner_type":1,  "stat.recent_time":-1}
*
*现场取最新最老日记：实时查
*/
struct ListNewestSceneRequest
{
    /** 平台标签 */
    1:i32 platform 
 2:i32 offset
 3:i32 limit
    /** 置顶多少条 */
    4:i32 top_num 

    /** 过滤条件 */
    11:ListSceneCondition cond 
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    15:string trace_tag 
}
struct ListNewestSceneResponse
{
 1:string res="succ"
    3:i32 total
    6:list<module.TSceneDiaryView> results
    /** 跟踪字段 【选填】 */
    10:string trace_tag 
}

/**
*
*query={...}
*sort={progress_id:1,otime:1, ctime:1}
*
*/

    /** ========== 查询现场详情 ========================================= */
    
struct ListSceneDetailRequest
{ 
 1:string _id
    /** 显示现场回复数,默认返回0条 */
    2:i32 scene_reply_num=0 
    /** 显示日记回复数,默认返回0条 */
    3:i32 diary_reply_num=0 
    /** 显示商品数,默认返回所有 */
    4:i32 product_num=100 
 5:i32 offset=0
 6:i32 limit=10
    /** 日记排序字段 */
    7:list<module.TSortField> sort 
    /** 必填，主人态和客人态需要查询的状态不同 */
    8:list<i32> status 
    /** 根据日记阶段查询现场下的日记 */
    9:list<i32> diary_progress_ids 
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
    /** 要定位的日记id */
    11:string locateDiaryId 
    /** 是否只查diary 【选填】 0:正常查询，1:只查询diary，用于图片集展示 */
    12:i32 diary_only=0 
	/** 版本控制 参考module.const字段 */ 
	13:double version=2.0
}
struct ListSceneDetailResponse
{ 
    1:module.TScene scene
    2:i32 total_diary
    3:i32 total_comment
    8:i32 ref_total_comment
 4:list<module.TDiaryInfoView> diary_list
 5:list<module.TCommentView> scene_comments
 6:string res="succ"
 7:i32 offset_diary
    /** 跟踪字段 */
    10:string trace_tag 
}

    /** ========== 相关推荐 ========================================= */
    
struct RecommendSceneRequest
{
    /** 户型 */
    1:i32 house_type 
    /** 面积 */
    2:double area 
    /** 风格 */
    3:list<i32> style 
    /** 排除掉的id */
    4:list<string> excludeIds 
 
    /** 推荐多少 */
    6:i32 limit 
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct RecommendSceneResponse
{
 1:string res="succ"
    3:i32 total
    6:list<module.TScene> results
    /** 跟踪字段 */
    10:string trace_tag 
}


    /** ========== 审核请求 ========================================= */
    
struct VerifyRequest
{
    /** 被验证对象的类型 【必填】 说明:参考const.TARGET_TYPE_** */
    1:i32 entity_type 
    /** 被验证对象的ID 【必填】 */
    2:string entity_id 
    /** 新状态 【必填】 说明:参考const.ENTITY_STATUS_DEL** */
    3:i32 status 
    /** 驳回理由 【当status=4时，必填】 */
    4:string remark 
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct VerifyResponse
{
 1:string res="succ"
 2:i32 entity_type
    3:string entity_id
    4:i32 status
    /** 跟踪字段 */
    10:string trace_tag 
}

struct AddDiaryProductRequest
{
 1:string diary_id
 2:string product_id
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct RemoveDiaryProductRequest
{
 1:string diary_id
 2:string product_id
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct JudgeProductUsedRequest
{
 1:list<string> product_ids
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct JudgeProductUsedResponse
{
 1:map<string, bool> used
    /** 跟踪字段 */
    10:string trace_tag 
}


    /** ==========查询标签（大阶段&小阶段）的日记统计============================ */
    
struct ListAllCategoryStatRequest
{
    /** 是否显示小阶段的标识位，0：显示，1：不显示； 默认为显示 */
    1:i32 show_tag=0 
    /** 根据日记状态统计日记的篇数 */
    2:list<i32> status 
    /** 现场id，查询该下场下标签的日记统计 */
    3:list<string> scene_ids 
	/** 添加监理筛选标签，改标签下显示所有的监理日志   1:显示监理统计;  默认为不显示 */
	4:i32 with_jianli=0
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag     
	/** 版本控制 参考module.const字段 */ 
	11:double version=2.0
}

struct ListAllCategoryStatResponse
{
 1:string res="succ"
 2:list<module.TProgressDiaryCount> results
    /** 跟踪字段 */
    10:string trace_tag 
}

    /** ==========现场图集======================================================== */
    
struct ListProgressImagesRequest
{
    /** 现场id */
    1:required string scene_id 
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct ListProgressImagesResponse
{
 1:string res="succ"
 2:list<module.TSceneProgressImgElem> results
    /** 跟踪字段 */
    10:string trace_tag 
}

    /** ==========统计信息======================================================= */
    
struct ListStatisticRequest
{
 5:i32 tgt_type 
 11:i32 from_time
 12:i32 to_time
 21:list<string> exclude_ids
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    20:string trace_tag 
}

struct ListStatisticResponse
{
 11:i32 count
    /** 跟踪字段 */
    10:string trace_tag 
}

    /** ==========轮单查询现场信息======================================================== */
    
struct ListCompanyAllScenesRequest
{
    1:i32 com_id
    /** 跟踪字段 【选填】 前端需要跟踪时设置该字段 */
    10:string trace_tag 
}

struct ListCompanyAllScenesResponse
{
    1:i32 total
    2:list<module.TSceneLundan> scenes
    /** 跟踪字段 */
    10:string trace_tag 
}


    /** ==========获取公司置顶日记======================================================== */
    
struct ListCompanyTopDiaryRequest
{
 1:list<i32> com_ids
    /** 跟踪字段 */
    10:string trace_tag 
}

struct ListCompanyTopDiaryResponse
{
 1:string res="succ"
 2:map<i32,list<module.TScene>> results
 10:string trace_tag
}
